home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
pascal
/
totsrc11.zip
/
TOTDIR.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-05-04
|
23KB
|
860 lines
{ Copyright 1991 TechnoJock Software, Inc. }
{ All Rights Reserved }
{ Restricted by License }
{ Build # 1.10 }
Unit totDIR;
{$I TOTFLAGS.INC}
{
Development Notes:
1.00a 3/25/91 Allowed typing of filename when no files
in list.
1.00b 5/18/91 Added DIRinit to interface
1.00c 2/04/92 Trapped for ? * chars in path
}
INTERFACE
uses DOS,CRT,
totIO1, totIO2, totLINK, totSTR, totSYS, totWIN,
totINPUT, totFAST, totMISC, totMsg;
CONST
SignalUpdateDirField = 10; {Signal ID}
SignalUpdateFileField = 11;
ReadMessage: string[20] = 'Reading files...';
SortMessage: string[20] = 'Sorting files...';
TYPE
pDirDLLOBJ = ^DirDLLOBJ;
DirDLLOBJ = object (DLLOBJ)
vShowDrives: boolean;
{methods ...}
constructor Init;
procedure FillList;
procedure SetDrives(On:boolean);
function GetStr(Node:DLLNodePtr;Start,Finish: longint):string; VIRTUAL;
destructor Done;
end; {DirDLLOBJ}
pFilesFieldOBJ = ^FilesFieldOBJ;
FilesFieldOBJ = object (ListIOOBJ)
vFileList: ^FileDLLOBJ;
vSortCode: byte;
vSortOrder: boolean;
{methods ...}
constructor Init;
procedure SetFileDetails(FileMasks:string; FileAttrib: word);
procedure SetSortDetails(SortCode: byte; SortOrder: boolean);
procedure FillList;
function GetChosenFile: string;
function Select(K:word; X,Y:byte):TAction; VIRTUAL;
procedure ShowItemDetails(HiPick: integer); VIRTUAL;
function GetString(Pick:integer): string; VIRTUAL;
function SelectPick(InKey:word;X,Y:byte): tAction; VIRTUAL;
procedure HandleSignal(var BaseSig:tSignal; var NewSig:tSignal); VIRTUAL;
destructor Done; VIRTUAL;
end; {FilesFieldOBJ}
pDirFieldOBJ = ^DirFieldOBJ;
DirFieldOBJ = object (ListIOOBJ)
vDirList: ^DirDLLOBJ;
{methods ...}
constructor Init;
procedure FillList;
procedure ReadDir(Status:tStatus);
function Select(K:word; X,Y:byte):TAction; VIRTUAL;
function GetString(Pick:integer): string; VIRTUAL;
function SelectPick(InKey:word;X,Y:byte): tAction; VIRTUAL;
procedure RaiseSignal(var TheSig:tSignal); VIRTUAL;
procedure HandleSignal(var BaseSig:tSignal; var NewSig:tSignal); VIRTUAL;
destructor Done; VIRTUAL;
end; {DirFieldOBJ}
pFileInputFieldOBJ = ^FileInputFieldOBJ;
FileInputFieldOBJ = object (LateralIOOBJ)
vChangeDir: boolean;
vChangeMask: boolean;
vLastInput: string;
{methods ...}
constructor Init;
procedure SetLastValue(Mask:string);
procedure WriteLabel(Status:tStatus); VIRTUAL;
function ProcessEnter:tAction; VIRTUAL;
procedure RaiseSignal(var TheSig:tSignal); VIRTUAL;
procedure ShutdownSignal(var BaseSig:tSignal); VIRTUAL;
function Suspend:boolean; VIRTUAL;
destructor Done; VIRTUAL;
end; {FileInputFieldOBJ}
pDirWinOBJ = ^DirWinOBJ;
DirWinOBJ = object
vFileSpec: ^FileInputFieldOBJ;
vFileList: ^FilesFieldOBJ;
vDirList: ^DirFieldOBJ;
vOK: Strip3DIOOBJ;
vCancel: Strip3DIOOBJ;
vHelp: Strip3DIOOBJ;
vControl: ControlKeysIOOBJ;
vManager: WinFormOBJ;
vOldDir: string[80];
vStartDir: string[80];
vEndDir: string[80];
{methods ...}
constructor Init;
function Action: pWinFormOBJ;
function Go: tAction;
procedure SetFileDetails(StartDir:string; FileMasks:string; FileAttrib: word);
procedure SetSortDetails(SortCode: byte; SortOrder: boolean);
function Win: MoveWinPtr;
function FilenameTyped:boolean;
function GetChosenFile: string;
destructor Done; VIRTUAL;
end; {DirWinOBJ}
procedure DIRInit;
IMPLEMENTATION
var Floppies: byte;
{|||||||||||||||||||||||||||||||||||||||||||||}
{ }
{ M i s c. P r o c s & F u n c s }
{ }
{|||||||||||||||||||||||||||||||||||||||||||||}
procedure WriteFullDir;
{}
var Str:string;
begin
GetDir(0,Str);
Screen.WritePlain(1,17,padleft(Str,45,' '));
end; {WriteFullDir}
{$F+}
procedure DirHelp(ID:word);
{}
var HelpWin: MessageOBJ;
begin
with HelpWin do
begin
Init(1,'File Load Help');
AddLine('Enter a filename (or file mask) in the Name ');
Addline('box, or TAB to the file list and select a');
Addline('file from the list by pressing Enter or ');
AddLine('double clicking the mouse.');
AddLine('');
AddLine('To change directories, TAB to the Directories');
AddLine('list and select one.');
AddLine('');
Show;
Done;
end;
end; {DirHelp}
{$IFNDEF OVERLAY}
{$F-}
{$ENDIF}
{|||||||||||||||||||||||||||||||||||||||||||}
{ }
{ D i r D L L O b j M E T H O D S }
{ }
{|||||||||||||||||||||||||||||||||||||||||||}
constructor DirDLLOBJ.Init;
{}
begin
DLLOBJ.Init;
vShowDrives := true;
end; {DirDLLOBJ.Init}
procedure DirDLLOBJ.SetDrives(On:boolean);
{}
begin
vShowDrives := On;
end; {DirDLLOBJ.SetDrives}
procedure DirDLLOBJ.FillList;
{}
var
DirInfo: SearchRec;
Drive: string;
I : integer;
Result: longint;
Ecode : integer;
ActiveDrive: integer;
begin
if vStartNodePtr <> Nil then
EmptyList;
FindFirst('*.*', AnyFile, DirInfo);
while DOSError = 0 do
begin
if ((DirInfo.Attr and Directory) = Directory)
and (DirInfo.Name <> '.') then
begin
Drive := '['+DirInfo.Name+']';
Ecode := Add(Drive,succ(length(Drive)));
if Ecode = 0 then
vActiveNodePtr^.SetStatus(0,true); {indicates directory change}
end;
FindNext(DirInfo);
end;
if vShowDrives then {get active drives}
begin
{$I-}
getdir(0,Drive);
{$I-}
if IOResult = 0 then
ActiveDrive := ord(Drive[1]) - 64
else
ActiveDrive := 0;
if (Floppies >= 1) and (ActiveDrive <> 1) then
begin
Drive := '[ -A- ]';
Ecode := Add(Drive,8);
end;
if (Floppies >= 2) and (ActiveDrive <> 2) then
begin
Drive := '[ -B- ]';
Ecode := Add(Drive,8);
end;
for I := 3 to 26 do {test all letters}
begin
Result := DiskSize(I);
if (Result <> -1) and (ActiveDrive <> I) then {valid drive}
begin
Drive := '[ -'+char(I+64)+'- ]';
Ecode := Add(Drive,8);
end;
end;
end;
Jump(1);
end; {DirDLLOBJ.FillList}
function DirDLLOBJ.GetStr(Node:DLLNodePtr;Start,Finish: longint):string;
{ignores Start and Finish parameters}
var temp : string;
begin
if (Node = Nil)
or (Node^.vDataPtr = Nil)
or (Node^.vSize = 0) then
GetStr := ''
else
begin
Move(mem[seg(Node^.vDataPtr^):ofs(Node^.vDataPtr^)],Temp[0],15);
GetStr := Temp;
end;
end; {DirDLLOBJ.GetStr}
destructor DirDLLOBJ.Done;
{}
begin
DLLOBJ.Done;
end; {DirDLLOBJ.Done}
{||||||||||||||||||||||||||||||||||||||||||||||||||||}
{ }
{ F i l e s F i e l d O B J M e t h o d s }
{ }
{||||||||||||||||||||||||||||||||||||||||||||||||||||}
constructor FilesFieldOBJ.Init;
{}
begin
ListIOOBJ.Init(